package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class SortPoint {
    public static void main(String[] args) {
        List<Point> list = new ArrayList<>();
        list.add(new Point(5,8));
        list.add(new Point(33,290));
        list.add(new Point(21,52));
        list.add(new Point(45,6));
        list.add(new Point(55,69));
        list.add(new Point(1,2));
        System.out.println("list原始数据: "+list); //[(5,8), (33,290), (21,52), (45,6), (55,69), (1,2)]

        Collections.sort(list, new Comparator<Point>() {
            /*
              compare()方法用于定义o1和o2比较大小的规则，并且通过返回值来表达大小关系
              返回值实现的要求:-------------不用纠结，记住下面的结论即可
                1)如果返回值>0则表达的是o1>o2
                2)如果返回值<0则表达的是o1<o2
                3)如果返回值==0则表达的是o1=o2
              结论:
                1)前面的-后面的-------------------升序
                2)后面的-前面的-------------------降序
             */
            public int compare(Point o1, Point o2) {
                //return o1.getX()-o2.getX(); //按照x坐标升序排列
                return o2.getY()-o1.getY(); //按照y坐标降序排列
            }
        });

        Collections.sort(list,(o1,o2)->o2.getY()-o1.getY());
        System.out.println("排序后数据:"+list);
    }
}
